
#ifndef SHOW_COLLISION_WORLD_H
#define SHOW_COLLISION_WORLD_H


#include <iostream>
#include <pcl/octree/octree.h>
#include <pcl/octree/octree_impl.h>
#include <pcl/octree/octree_pointcloud.h>

#include <pcl/io/pcd_io.h>

#include <pcl/filters/filter.h>

#include "CollisionWorldViewer\CollisionWorldViewer.h"
#include "KinematicModel\KinematicModelTypes.h"
#include "KinematicModel\ArmDimensions.h"



class PathCalculator{
	public:

		PathCalculator (std::vector<std::string> cloud_path, double resolution, std::vector< object > objects, int no, int movementClass);
		PathCalculator (int movementClass);

		std::vector<Point> getPath();
		
		void PathCalculator::setPath(vector<Point> myPath);


	private:
	  //========================================================
	  // PRIVATE ATTRIBUTES
	  //========================================================
 
	  //original cloud
	  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
	  //displayed_cloud
	  pcl::PointCloud<pcl::PointXYZ>::Ptr displayCloud;
	  //octree
	  pcl::octree::OctreePointCloudVoxelCentroid<pcl::PointXYZ> octree;
	  //level
	  int displayedDepth;
	  //path
	  std::vector<Point> path;
	  //========================================================
	  bool loadCloud(std::string &filename);
};

#endif